home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
tools
/
sharp
/
xc2103i.lzh
/
XC2103.XDF
/
ASK30
/
KANJI_TO.S
< prev
next >
Wrap
Text File
|
1993-09-15
|
3KB
|
197 lines
********************************************************************************
*
* 部首別漢字 for ASK3
* Copyright (C) 1992 ACCESS CO.,LTD.
*
********************************************************************************
.include doscall.mac
.xref _acc
.xref _mbuf *常駐サイズの計算をするため
.xref _scanarg
.text
.even
devhdr:
.dc.l -1
.dc.w $8000
.dc.l str
.dc.l intr
.dc.b 'KNJSEL*/'
rqhdr: .dc.l 0
str:
move.l a5,rqhdr
rts
intr:
movem.l d0-d7/a0-a6,-(sp)
move.l rqhdr,a5
clr.l d0
move.b 2(a5),d0
tst.b d0
bne notcom
bsr init
move.b d0,3(a5)
lsr.w #8,d0
move.b d0,4(a5)
bra intr_end
notcom:
move.b #$03,3(a5)
move.b #$00,4(a5)
intr_end:
movem.l (sp)+,d0-d7/a0-a6
rts
init:
move.l #50,-(sp) *ASKのバージョンチェック
DOS _KNJCTRL
addq.l #4,sp
cmpi.l #300,d0
blt ask3_not_exist
move.l a5,-(sp)
move.l 18(a5),-(sp) *引数解析
bsr _scanarg
addq.l #4,sp
move.l (sp)+,a5
tst.l d0
bne argerr
pea.l _acc *アクセサリを登録する
move.l #60,-(sp)
DOS _KNJCTRL
addq.l #8,sp
cmpi.l #-1,d0
beq inierr
pea.l okmes
DOS _PRINT
addq.l #4,sp
move.l #_mbuf+18,14(a5)
clr.l d0
rts
argerr:
pea.l usage
DOS _PRINT
addq.l #4,sp
bra inierr
ask3_not_exist:
pea.l errmes
DOS _PRINT
addq.l #4,sp
inierr: move.w #$700d,d0
rts
.data
.even
okmes .dc.b '部首別漢字 for ASK3 Copyright (C) 1992 ACCESS CO.,LTD.',13,10,0
errmes: .dc.b 'ASKver3.00以上がありません. ',0
usage: .dc.b 'パラメータを指定してください.(/D辞書パス名)',0
.text
.even
*
*FPコール62番
*
.xdef _sstrtom
_sstrtom:
link a6,#0
bsr brkget
move.l 16(a6),-(sp)
move.l 12(a6),-(sp)
move.l 8(a6),-(sp)
move.l #62,-(sp)
DOS _KNJCTRL
bsr brkset
unlk a6
rts
*
*FPコール63番
*
.xdef _chgkind
_chgkind:
link a6,#0
bsr brkget
move.l 16(a6),-(sp)
move.l 12(a6),-(sp)
move.l 8(a6),-(sp)
move.l #63,-(sp)
DOS _KNJCTRL
bsr brkset
unlk a6
rts
*
*ファイルアクセス関数
*
.xdef _xopen *int xopen(u_char *file, short mode);
_xopen: *戻り値 0以上 ファイルハンドル
link a6,#0 * 0未満 エラーコード
bsr brkget
move.w 14(a6),-(sp)
or.w #$0100,(sp) *辞書ビット立てる
move.l 8(a6),-(sp)
DOS _OPEN
bsr brkset
unlk a6
rts
.xdef _xclose
_xclose:
bsr brkget *int xclose(int fd);
move.w 6(sp),-(sp) *戻り値 0以上 ファイルハンドル
DOS _CLOSE * 0未満 エラー
addq.l #2,sp
bsr brkset
rts
.xdef _xseek
_xseek:
link a6,#0 *int xseek(int fd, int offset, short mode)
bsr brkget *戻り値 0以上 先頭からのオフセット
move.w 18(a6),-(sp) * 0未満 エラー
move.l 12(a6),-(sp)
move.w 10(a6),-(sp)
DOS _SEEK
bsr brkset
unlk a6
rts
.xdef _fgets
_fgets:
bsr brkget *int fgets(int fd, char *buf)
move.w 6(sp),-(sp) *戻り値 0以上 読んだ文字数
move.l 10(sp),-(sp) * -1 EOF
DOS _FGETS
addq.l #6,sp
bsr brkset
rts
*
*一時的に"BREAK OFF"にする
*
brkget:
move.w #-1,-(sp) *ブレークチェックしているか?
DOS _BREAKCK
addq.l #2,sp
move.w d0,brksts *その情報をセーブする
clr.w -(sp) *ブレークチェックしないに設定
DOS _BREAKCK
addq.l #2,sp
rts
brkset:
move.l d0,-(sp) *d0保存
move.w brksts,-(sp) *ブレークチェック環境を元に戻す
DOS _BREAKCK
addq.l #2,sp
move.l (sp)+,d0
rts
brksts: .dc.w 0
.end